package br.edu.oxente.persistence.jpa;

import javax.persistence.EntityManager;

/**
 *
 * @author Nigini Abilio - nigini@gmail.com
 */
public class GenericDAO<T>  {

	protected EntityManager manager = null;

	/**
	 * Metodo responsavel por persistir objetos.
	 * @param entidade Entidade a ser salva.
	 */
	public T save(T entidadeGenerica) {
		try {
			this.manager = JPAUtility.getEntityManager();
			this.manager.getTransaction().begin();
			this.manager.persist(entidadeGenerica);
			this.manager.getTransaction().commit();
			this.manager.refresh(entidadeGenerica);
			this.manager.close();
		} catch (Exception e) {
			if ( this.manager.getTransaction().isActive()) {
                                this.manager.getTransaction().rollback();
                        }
			//ToDo Sinalizar falha no salvamento.
			System.err.println( e.getMessage() );
		}
		return entidadeGenerica;
	}
	
}
